import sys
from PySide6.QtWidgets import (QApplication, QMainWindow, QPushButton, 
                             QVBoxLayout, QHBoxLayout, QWidget, QDialog,
                             QLabel, QLineEdit, QDialogButtonBox)
from PySide6.QtCore import Qt

class CustomDialog(QDialog):
    """自定义对话框类"""
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle("自定义对话框")
        self.resize(300, 200)  # 设置对话框大小
        
        # 确保对话框关闭时能返回结果
        self.setModal(True)  # 模态对话框（阻止父窗口交互）
        
        # 初始化界面
        self.init_ui()
        
        # 存储用户输入的结果
        self.result_data = None

    def init_ui(self):
        """初始化对话框界面"""
        main_layout = QVBoxLayout()
        
        # 添加标题
        title_label = QLabel("请输入信息：")
        title_label.setAlignment(Qt.AlignCenter)
        main_layout.addWidget(title_label)
        
        # 添加输入框
        self.name_input = QLineEdit()
        self.name_input.setPlaceholderText("输入姓名")
        main_layout.addWidget(self.name_input)
        
        self.age_input = QLineEdit()
        self.age_input.setPlaceholderText("输入年龄")
        main_layout.addWidget(self.age_input)
        
        # 添加按钮（确定/取消）
        button_box = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel,
            Qt.Horizontal, self
        )
        # 连接按钮信号
        button_box.accepted.connect(self.accept)  # 确定按钮
        button_box.rejected.connect(self.reject)  # 取消按钮
        main_layout.addWidget(button_box)
        
        self.setLayout(main_layout)

    def accept(self):
        """处理确定按钮逻辑"""
        # 保存用户输入
        self.result_data = {
            "name": self.name_input.text().strip(),
            "age": self.age_input.text().strip()
        }
        # 关闭对话框并返回QDialog.Accepted
        super().accept()

class MainWindow(QMainWindow):
    """主窗口类"""
    def __init__(self):
        super().__init__()
        self.setWindowTitle("打开对话框示例")
        self.setGeometry(100, 100, 400, 300)
        
        # 设置主窗口中央部件
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        
        layout = QVBoxLayout(central_widget)
        
        # 添加显示结果的标签
        self.result_label = QLabel("对话框结果将显示在这里")
        self.result_label.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.result_label)
        
        # 添加打开对话框的按钮
        open_btn = QPushButton("打开对话框")
        open_btn.clicked.connect(self.open_dialog)
        layout.addWidget(open_btn)

    def open_dialog(self):
        """打开自定义对话框并处理结果"""
        # 创建对话框实例（指定父窗口为当前主窗口）
        dialog = CustomDialog(self)
        
        # 显示对话框并等待用户操作（exec()会阻塞直到对话框关闭）
        result = dialog.exec()
        
        # 处理对话框返回结果
        if result == QDialog.Accepted:
            # 用户点击了确定按钮
            data = dialog.result_data
            self.result_label.setText(
                f"用户输入：\n姓名: {data['name']}\n年龄: {data['age']}"
            )
        else:
            # 用户点击了取消按钮或关闭了对话框
            self.result_label.setText("对话框已取消")
from loger import log
if __name__ == "__main__":
    log.info("test4")
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())
